Digital signal processing techniques are frequently employed to enhance a desired signal in a wide variety of applications, such as health care, communications and avionics, to name a few. Signal enhancement includes smoothing, filtering and prediction. These processing techniques each operate on a block of input signal values, such as, for example, a window of input signal values, in order to estimate the signal at a specific point in time. FIG. 1 illustrates that smoothing, filtering and prediction can be distinguished by the time at which an output value is generated relative to input values. Shown in FIG. 1 is a time axis 100 and a block 101 of input signal values depicted in this example as occurring within a time window between points tmin and tmax. Specifically, the block 101 includes a set of discrete input values {vi;i=1, 2, . . . n} occurring at a corresponding set of time points {ti;i=1, 2, . . . n}. A smoother operates on the block 101 of input values to estimate the signal at a time point, ts 102 between tmin and tmax. That is, a smoother generates an output value based upon input values occurring before and after the output value. A filter operates on the block 101 of input values to estimate the signal at a time tf 104, corresponding to the most recently occurring input value in the block 101. That is, a filter generates a forward filtered output value at the time tf based upon input values occurring at, and immediately before, the output value. A filter also operates on the block 101 to estimate the signal at a time tb 105 at the beginning of the block 101 to generate a backward filtered value. A forward predictor operates on the block of input values 101 to estimate the signal at time tpf 106, which is beyond the most recently occurring value in the block 101. That is, a forward predictor generates a forward predicted output value based upon input values occurring prior to the output value. A backward predictor operates on the block 101 of input values to estimate the signal at time tpb 108, which is before the earliest occurring value in the block 101. That is, a backward predictor generates a backward predicted output value based upon input values occurring after the output value.